package fichier;
import java.io.*; 
import org.jdom.*; 
import org.jdom.output.*;
import org.jdom.Document;

public class CreerXML
{ 
	//Creation racine XML
	private static Element racine = new Element("probleme");  
	//Creation nouveau Document JDOM base sur la racine que l'on vient de creer  
	private static Document document = new Document(racine); 
	private static Attribute type;
	
	public static void affiche()
	{
	   try
	   {
	      //On utilise ici un affichage classique avec getPrettyFormat()
	      XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
	      sortie.output(document,System.out);
	   }
	   catch (IOException e)
	   {
		   e.printStackTrace();
	   }
	}

	public static void enregistre(String fichier)
	{
	   try
	   {
	      //Affichage classique avec getPrettyFormat()
	      XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
	      //Il suffit simplement de cr�er une instance de FileOutputStream
	      //avec en argument le nom du fichier pour effectuer la serialisation.
	      sortie.output(document, new FileOutputStream(fichier));
	   }
	   catch (IOException e)
	   {
		   e.printStackTrace();
	   }
	}
	
	public static void creerFichier()
	{
		// On cree un nouvel Element et on l'ajoute en temps qu'Element de racine  
		Attribute nompb = new Attribute("name","nom_pb");
		racine.setAttribute(nompb); 
		
		Attribute workspace = new Attribute("workspace","default");
		racine.setAttribute(workspace);
		
		type = new Attribute("type","3D");
		racine.setAttribute(type);
		
		Element optimisation = new Element("optimisation");
		Attribute sens = new Attribute("sens","MINIMIZE");
		optimisation.setAttribute(sens); 
		
		Attribute descr = new Attribute("description","Kwoa");
		optimisation.setAttribute(descr); 
		racine.addContent(optimisation);
		
		char c = type.getValue().charAt(0);
		for (int i=1;i<=Character.getNumericValue(c);i++)
		{
			//On cree un nouvel Element, on lui assigne du texte   
			//et on l'ajoute en temps qu'Element  
			Element var = new Element("variable"); 
			//On cree un nouvel Attribut  et on l'ajoute grace a la methode setAttribute 
			Attribute name = new Attribute("name","x"+i);
			var.setAttribute(name); 
			var.setText("5");
			optimisation.addContent(var); 
		} 
		creerEquationXml();
		affiche(); 
		enregistre("test2D.xml"); 
	}
	
	public static void creerEquationXml()
	{
		Element subject = new Element("subject_to");
		racine.addContent(subject);
		
		for(int i=0;i<4;i++)
		{
			Element constraint= new Element("constraint"); 
			Attribute lib = new Attribute("libelle","C1");
			constraint.setAttribute(lib); 
			
			Attribute r = new Attribute("r","50");
			constraint.setAttribute(r);
			
			Attribute v = new Attribute("v","50");
			constraint.setAttribute(v); 
			
			Attribute b = new Attribute("b","50");
			constraint.setAttribute(b);
			
			char c = type.getValue().charAt(0);			
			for (int j=1;j<=Character.getNumericValue(c);j++)
			{
				Element var = new Element("variable"); 
				Attribute name = new Attribute("name","x"+j);
				var.setAttribute(name); 
				var.setText("5");
				constraint.addContent(var);				
			}
			
			Element signe = new Element("signe"); 
			signe.setText("INF_EQ");
			constraint.addContent(signe);
			
			Element valeur = new Element("partie_droite"); 
			valeur.setText("300");
			constraint.addContent(valeur); 
			subject.addContent(constraint);
		}
	}
	
	public static void main(String[] args) 
	{
		creerFichier();
	}
}